package edu.isquen.core.base.dao;

import edu.isquen.core.base.model.ValueObject;

/****************************************************
* 文件名：IBaseDAO.java
* 文件描述：DAO基类接口
* 创建人： isquen, 2011 年6 月10 日
* 版本号：1.0
* 修改记录：
****************************************************/
public interface IBaseDAO<E>{
	
	/**********************************************
	* 函数名：create
	* 参数：Object
	* 功能描述:创建记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void create(Object obj) throws Exception;
	
	/**********************************************
	* 函数名：update
	* 参数：Object
	* 功能描述:更新记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void update(Object obj) throws Exception;
	
	/**********************************************
	* 函数名：remove
	* 参数：String key
	* 功能描述：按主键移除记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void remove(String key) throws Exception;
	
	/**********************************************
	* 函数名：remove
	* 参数：ValueObject
	* 功能描述：按主键批量移除记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void remove(ValueObject obj) throws Exception;
	
	/**********************************************
	* 函数名：remove
	* 参数：String[]
	* 功能描述:按主键批量移除数据
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void remove(String[] keys) throws Exception;
	
	/**********************************************
	* 函数名：getDatas
	* 参数：ValueObject数组
	* 功能描述:查询数据
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<E> getDatas(String dql) throws Exception;
	
	/**********************************************
	* 函数名：getDatasBySql
	* 参数：String sql
	* 功能描述:sql语句查询
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public DataPackage<E> getDatasBySql(String sql) throws Exception;
	
	/**********************************************
	* 函数名：getDatas
	* 参数：
	* 功能描述:查找所有数据
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<E> getDatas() throws Exception;
	
	/**********************************************
	* 函数名：getData
	* 参数：	String dql
	* 功能描述:查询数据
	* 返回值：Object
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract Object getData(String dql) throws Exception ;
	
	/**********************************************
	* 函数名：getDatas
	* 参数：	String dql,
	* 		String params
	* 功能描述:根据参数查询数据
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<E> getDatas(String dql,String params) throws Exception;
	
	/**********************************************
	* 函数名：getDatas
	* 参数： 字符串 dql,
	* 	           整型page,
	* 		整型line
	* 功能描述:分页查询记录
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<E> getDatas(String dql,int page,int line) throws Exception;
	
	/**********************************************
	* 函数名：getTotalLines
	* 参数：字符串dql
	* 功能描述:查询记录总数
	* 返回值：int
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract int getTotalLines(String dql) throws Exception;
	
	/**********************************************
	* 函数名：find
	* 参数：key主键
	* 功能描述:根据主键查找
	* 返回值：ValueObject
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract ValueObject find(String key) throws Exception;
	
	/**********************************************
	* 函数名：findByAny
	* 参数：ValueObject
	* 功能描述:根据任意字段查询记录
	* 返回值：DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<E> findByAny(ValueObject obj) throws Exception;
}
